package com.zmq.ha.client.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.TimeZone;

import org.slf4j.Logger;


public class TimeUtil {
	
	
	/** 毫秒 */
	public final static long MS = 1;
	/** 每秒钟的毫秒数 */
	public final static long SECOND_MS = MS * 1000;
	/** 每分钟的毫秒数 */
	public final static long MINUTE_MS = SECOND_MS * 60;
	/** 每小时的毫秒数 */
	public final static long HOUR_MS = MINUTE_MS * 60;
	/** 每天的毫秒数 */
	public final static long DAY_MS = HOUR_MS * 24;
	
	/** 标准日期格式 */
	public final static String NORM_DATE_PATTERN = "yyyy-MM-dd";
	/** 标准时间格式 */
	public final static String NORM_TIME_PATTERN = "HH:mm:ss";
	/** 标准日期时间格式，精确到分 */
	public final static String NORM_DATETIME_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
	/** 标准日期时间格式，精确到秒 */
	public final static String NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
	/** 标准日期时间格式，精确到毫秒 */
	public final static String NORM_DATETIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
	/** HTTP头中日期时间格式 */
	public final static String HTTP_DATETIME_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";

	private static final String DEFUALT_TIME_PATTEN = "yyyy-MM-dd HH:mm:ss";
	private static final String DEFAULT_SERIALNUMBER_PATTEN = "yyyyMMddHHmmss";
	
	/** 标准日期（不含时间）格式化器 */
	private static ThreadLocal<SimpleDateFormat> NORM_DATE_FORMAT = new ThreadLocal<SimpleDateFormat>(){
		synchronized protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat(NORM_DATE_PATTERN);
		};
	};

	/** 标准时间格式化器 */
	private static ThreadLocal<SimpleDateFormat> NORM_TIME_FORMAT = new ThreadLocal<SimpleDateFormat>(){
		synchronized protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat(NORM_TIME_PATTERN);
		};
	};
	
	/** 标准日期时间格式化器 */
	private static ThreadLocal<SimpleDateFormat> NORM_DATETIME_FORMAT = new ThreadLocal<SimpleDateFormat>(){
		synchronized protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat(NORM_DATETIME_PATTERN);
		};
	};
	
	/** HTTP日期时间格式化器 */
	private static ThreadLocal<SimpleDateFormat> HTTP_DATETIME_FORMAT = new ThreadLocal<SimpleDateFormat>(){
		synchronized protected SimpleDateFormat initialValue() {
			return new SimpleDateFormat(HTTP_DATETIME_PATTERN, Locale.US);
		};
	};
	
	/**
	 * @throws RuntimeException
	 */
	private TimeUtil() throws RuntimeException {
		throw new RuntimeException("util class is static");
	}
	
	// ------------------------------------ Format start ----------------------------------------------
	/**
	 * 根据特定格式格式化日期
	 * @param date 被格式化的日期
	 * @param format 格式
	 * @return 格式化后的字符串
	 */
	public static String format(Date date, String format) {
		return new SimpleDateFormat(format).format(date);
	}

	/**
	 * 格式 yyyy-MM-dd HH:mm:ss
	 * @param date 被格式化的日期
	 * @return 格式化后的日期
	 */
	public static String formatDateTime(Date date) {
		return NORM_DATETIME_FORMAT.get().format(date);
	}

	/**
	 * 格式 yyyy-MM-dd
	 * @param date 被格式化的日期
	 * @return 格式化后的字符串
	 */
	public static String formatDate(Date date) {
		return NORM_DATE_FORMAT.get().format(date);
	}

	/**
	 * 格式化为Http的标准日期格式
	 * @param date 被格式化的日期
	 * @return HTTP标准形式日期字符串
	 */
	public static String formatHttpDate(Date date) {
		return HTTP_DATETIME_FORMAT.get().format(date);
	}
	// ------------------------------------ Format end ----------------------------------------------

	// ------------------------------------ Parse start ----------------------------------------------

	/**
	 * 将long类型时间转化为字符串 （格式：yyyy-MM-dd mm:dd:ss）
	 * @param time              时间（毫秒）
	 * @param timeZone          所在时区
	 * @return                  字符串类型的时间
	 */
	public static String formatDate(long time) {
		if (time == 0) return "NA";
		final SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.getTimeZone());
		return format.format(time);
	}

	/**
	 * 将long类型时间转化为字符串
	 * @param time                   时间（毫秒）
	 * @param pattern                输出格式，例："yyyy-MM-dd HH:mm:ss.SSS"
	 * @param timeZone               所在时区
	 * @return                       字符串类型的时间
	 */
	public static String formatDate(long time, String pattern, TimeZone timeZone) {
		if (time == 0) return "NA";
		final SimpleDateFormat format = new SimpleDateFormat(pattern);
		format.setTimeZone(timeZone);
		return format.format(time);
	}

	/**
	 * 得到long类型时间的年份
	 * @param time           时间（毫秒）
	 * @param timeZone       所在时区
	 * @return               年份
	 */
	public static int getYear(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 得到long类型时间的月份（从1算起）
	 * @param time                    时间（毫秒）
	 * @param timeZone                所在时区
	 * @return                        月份（从1算起）
	 */
	public static int getMonth(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.get(Calendar.MONTH) + 1;
	}

	/**
	 * 得到long类型时间的天（在月份里是第几天，从1算起）
	 * @param time                 时间（毫秒）
	 * @param timeZone             所在时区
	 * @return                     天（在月份里是第几天，从1算起）
	 */
	public static int getDayInMonth(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 得到long类型时间的天（在星期里是第几天，星期日=1、星期一=2 ...）
	 * @param time                    时间（毫秒）
	 * @param timeZone                所在时区
	 * @return                        天（在星期里是第几天，星期日=1 、星期一=2 ...）
	 */
	public static int getDayInWeek(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.get(Calendar.DAY_OF_WEEK);
	}

	/**
	 * 得到long类型时间的天（在年里是第几天，从1算起）
	 * @param time             时间（毫秒）
	 * @param timeZone         所在时区
	 * @return                 年份
	 */
	public static int getDayInYear(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 得到long类型时间 所在的月份 最大的天数（例：8月=31）
	 * @param time                时间（毫秒）
	 * @param timeZone            所在时区
	 * @return                    最大的天数（例：8月=31）
	 */
	public static int getMaxDayInMonth(long time, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);
		return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
	}

	/**
	 * time1 和 time2，相差的天数 （ time1 - time2 ）
	 * @param time1
	 * @param time2
	 * @return time1 和 time2，相差的天数 （ time1 - time2 ）
	 */
	public static long getDateDeffDay(long time1, long time2) {
		// (time1-time2)/(24*60*60*1000)
		return (time1 - time2) / 86400000l;
	}

	/**
	 * time1 和 time2，相差的月数 （年份也计算在内，即相差一年 = 相差12个月）（ time1 - time2 ）
	 * @param time1
	 * @param time2
	 * @return time1 和 time2，相差的月数 （年份也计算在内，即相差一年 = 相差12个月）（ time1 - time2 ）
	 */
	public static long getDateDeffMonth(long time1, long time2) {
		final Calendar calendar1 = Calendar.getInstance();
		final Calendar calendar2 = Calendar.getInstance();

		calendar1.setTimeInMillis(time1);
		calendar2.setTimeInMillis(time2);

		return (calendar1.get(Calendar.YEAR) - calendar2.get(Calendar.YEAR))
				* 12 + calendar1.get(Calendar.MONTH)
				- calendar2.get(Calendar.MONTH);
	}

	/**
	 * 在 time 加上 minute 分钟
	 * @param time
	 * @param minute     可以为负数
	 * @return
	 */
	public static long addMinute(long time, int minute) {
		// time + 60*1000
		return time + 60000l * minute;
	}

	/**
	 * 在 time 加上 hour 小时
	 * 
	 * @param time
	 * @param hour    可以为负数
	 * @return
	 */
	public static long addHour(long time, int hour) {
		// time + 60*60*1000
		return time + 3600000l * hour;
	}

	/**
	 * 在 time 加上 day 天
	 * @param time
	 * @param day    可以为负数
	 * @return
	 */
	public static long addDay(long time, int day) {
		// time + 24*60*60*1000
		return time + 86400000l * day;
	}

	/**
	 * 在 time 加上 month 月（只改变月 和 年，其他不变；会出现7月31日 - 1个月 = 6月30日）
	 * @param time
	 * @param month      可以为负数
	 * @param timeZone
	 * @return
	 */
	public static long addMonth(long time, int month, TimeZone timeZone) {
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);

		calendar.add(Calendar.MONTH, month);

		return calendar.getTimeInMillis();
	}

	/**
	 * 在 time 加上 year 年（只改变年，其他不变；会出现2012年2月29日 + 1年 = 2013年2月28日）
	 * @param time
	 * @param year             可以为负数
	 * @param timeZone
	 * @return
	 */
	public static long addYear(long time, int year, TimeZone timeZone) {

		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(time);
		calendar.setTimeZone(timeZone);

		calendar.add(Calendar.YEAR, year);

		return calendar.getTimeInMillis();
	}

	/**
	 * 根据输入的时间信息，得到相应的以毫秒为单位的 时间
	 * @param year             年
	 * @param month            月(1月 = 1)
	 * @param day              日
	 * @param hour             小时
	 * @param minute           分钟
	 * @param second           秒
	 * @param milliSecond      毫秒
	 * @param timeZone         时区
	 * @return                 以毫秒为单位的 时间
	 */
	public static long getTimeMillis(int year, int month, int day, int hour,
			int minute, int second, int milliSecond, TimeZone timeZone) {

		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeZone(timeZone);

		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.MONTH, month - 1);
		calendar.set(Calendar.DAY_OF_MONTH, day);
		calendar.set(Calendar.HOUR_OF_DAY, hour);
		calendar.set(Calendar.MINUTE, minute);
		calendar.set(Calendar.SECOND, second);
		calendar.set(Calendar.MILLISECOND, milliSecond);

		return calendar.getTimeInMillis();
	}

	/**
	 * 根据输入的时间信息（ 毫秒 = 0 )，得到相应的以毫秒为单位的 时间
	 * @param year             年
	 * @param month            月(1月 = 1)
	 * @param day              日
	 * @param hour             小时
	 * @param minute           分钟
	 * @param second           秒
	 * @param timeZone         时区
	 * @return                 以毫秒为单位的 时间
	 */
	public static long getTimeMillis(int year, int month, int day, int hour,
			int minute, int second, TimeZone timeZone) {
		return getTimeMillis(year, month, day, hour, minute, second, 0,
				timeZone);
	}

	/**
	 * 根据输入的时间信息（ 小时、分钟、秒、毫秒 = 0 )，得到相应的以毫秒为单位的 时间
	 * @param year            年
	 * @param month           月(1月 = 1)
	 * @param day             日
	 * @param timeZone        时区
	 * @return                以毫秒为单位的 时间
	 */
	public static long getTimeMillis(int year, int month, int day,
			TimeZone timeZone) {
		return getTimeMillis(year, month, day, 0, 0, 0, 0, timeZone);
	}

	/**
	 * 将字符串时间转换为Long类型时间
	 * @param dateStr
	 * @return 以毫秒为单位的时间
	 */
	public static Long formatDate(String dateStr) {
		if (dateStr == null || dateStr.length() == 0) {
			return null;
		}
		
		Date date = null;
		final SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		try {
			date = format.parse(dateStr);
		} catch (ParseException e) {
			throw new RuntimeException("字符串时间转换为Long类型出错：" + e.getMessage());
		}
		return date.getTime();
	}
	
	public static Long formatDate(String dateStr, String patten) {
		
		if (dateStr == null || dateStr.length() == 0) {
			return null;
		}
		
		Date date = null;
		final SimpleDateFormat format = new SimpleDateFormat(patten);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		try {
			date = format.parse(dateStr);
		} catch (ParseException e) {
			throw new RuntimeException("字符串时间转换为Long类型出错：" + e.getMessage());
		}
		
		return date.getTime();
	}

	/**
	 * 获取当前的时间
	 * @return 以毫秒为单位
	 */
	public static Long getTimeNow() {
		//return System.currentTimeMillis();
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		
		return calendar.getTimeInMillis();
	}

	/**
	 * 获取当前的时间
	 * @return 以毫秒为单位
	 */
	public static Long getTimeNow(TimeZone timeZone) {
		//return System.currentTimeMillis();
		final Calendar calendar = Calendar.getInstance();
		calendar.setTimeZone(timeZone);
		
		return calendar.getTimeInMillis();
	}

	
	/**
	 * 获取上一天11:59:59时间
	 * @return
	 */
	public static String lastDay() {
		final String startTime = TimeUtil.specificTime(0,-1, 12, 0, 0);
		return startTime;
	}
	
	/**
	 * 获取上一天11:59:59时间(long类型)
	 * @return
	 */
	public static long lastDayLong() {
		return string2TimeLong(lastDay());
	}

	/**
	 * 获取当前的时间
	 * @return
	 */
	public static String currentDay() {
		final String endTime = TimeUtil.specificTime(0,0, 11, 59, 59);
		return endTime;
	}
	
	/**
	 * 获取当前的时间(long类型)
	 * @return
	 */
	public static long currentDayLong() {
		return string2TimeLong(currentDay());
	}
	
	/**
	 * 获取当前的日期和时间
	 * @return    返回当前的日期和时间
	 */
	public static String getDateAndTimeNow() {
		SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		return format.format(new Date());
	}
	
	/**
	 * 获取指定时间
	 * @param month
	 * @param day
	 * @param hour
	 * @param minute
	 * @param second
	 * @return
	 */
	public static String specificTime(int month, int day, int hour, int minute, int second) {
		final Calendar calendar = Calendar.getInstance();
		final GregorianCalendar g = new GregorianCalendar(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+month,
					calendar.get(Calendar.DAY_OF_MONTH) + day, hour, minute, second);
		return new SimpleDateFormat(DEFUALT_TIME_PATTEN).format(g.getTime());
	}
	
	public static String specificTime(int month, int day, int hour, int minute, int second, long time) {
		final Calendar calendar = Calendar.getInstance();
		
		calendar.setTimeInMillis(time);
		
		final GregorianCalendar g = new GregorianCalendar(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+month,
					calendar.get(Calendar.DAY_OF_MONTH) + day, hour, minute, second);
		return new SimpleDateFormat(DEFUALT_TIME_PATTEN).format(g.getTime());
	}
	

	
	public static int getMondayPlus() {
		final Calendar cd = Calendar.getInstance();
		int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;
		if (dayOfWeek == 1) {
			return 0;
		} else {
			return 1 - dayOfWeek;
		}
	}
	
	/**
	 * 获取到昨天这个时候
	 * @return            long 类型的时间
	 */
	public static Long getYesterday(){
		final Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR, -12);
        cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTimeInMillis();
	}
	
	/**
	 * 时间字符串转换成时间对象
	 * @param strTime         字符串时间
	 * @return                @see Date
	 */
	public static Date string2Time(String strTime) {
		final SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		try {
			return format.parse(strTime);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	 /**
     * 完成日期串到日期对象的转换. <BR>
     * @param dateString 日期字符串
     * @param dateFormat 日期格式
     * @return date 日期对象
     */
	public static Date stringToDate(String dateString, String dateFormat) {
		if ("".equals(dateString) || dateString == null) {
			return null;
		}
		try {
			return new SimpleDateFormat(dateFormat).parse(dateString);
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * 时间字符串转换成时间对象(long类型)
	 * @param strTime          字符串时间
	 * @return                 long 类型的时间
	 */
	public static long string2TimeLong(String strTime) {
		final Date date = string2Time(strTime);
		return date == null ? 0l : date.getTime(); 
	}
	
	/**
	 * 时间(long类型)转换成时间字符串
	 * @param time             long 类型时间
	 * @return                 字符串时间
	 */
	public static String time2String(long time) {
		if (time == 0) return "NA";
		final Date date = new Date(time);
		final SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		return format.format(date);
	}
	
	/**
	 * 时间类型转换成时间字符串
	 * @param date            @see Date
	 * @return                字符串时间
	 */
	public static String time2String(Date date) {
		final SimpleDateFormat format = new SimpleDateFormat(DEFUALT_TIME_PATTEN);
		format.setTimeZone(TimeZoneUtil.DEFUAL_TIMEZONE);
		return format.format(date);
	}
	
	/**
	 * 获取时间序列号
	 * @return
	 */
	public static String getDateTimeNowSerial() {
		final SimpleDateFormat format = new SimpleDateFormat(DEFAULT_SERIALNUMBER_PATTEN);
        return format.format(new Date());
    }
	
	@SuppressWarnings("static-access")
	public static String nextDay(){
		Date date=new Date(currentDayLong());//取时间
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE,1);
		return formatDate(calendar.getTime().getTime());
	}
	
	/**
	 * 截取时间毫秒数,倒数后4位向前9位
	 * @param time
	 * @return
	 */
	public static long parseTime(long time) {
		return time/1000;
	}
	
	
	/**
	 * 或者当前中午的时间
	 * @return
	 */
	public static long getCurrentMidleTime() {
		final String endTime = TimeUtil.specificTime(0,0, 12, 0, 0);
		return TimeUtil.formatDate(endTime);
	}
	
	
	/**
	 * 判断是否为指定时间
	 * @param startTimeStr
	 * @param endTimeStr
	 * @param patten
	 * @return
	 */
	public static boolean isFormatTime(String startTimeStr, String endTimeStr, String patten) {
		
		boolean isTime = false;
		
		Long timeNow = TimeUtil.getTimeNow();
		String currentSecondStr = TimeUtil.formatDate(timeNow, patten, TimeZoneUtil.DEFUAL_TIMEZONE);
		Long currentSecond = TimeUtil.formatDate(currentSecondStr, patten);
		Long startSecond = TimeUtil.formatDate(startTimeStr, patten);
		Long endSecond = TimeUtil.formatDate(endTimeStr, patten);
		
		if (TimeUtil.getDayInWeek(TimeUtil.getTimeNow(), TimeZoneUtil.DEFUAL_TIMEZONE) == 2
				&& startSecond.compareTo(currentSecond) == -1 
				&& endSecond.compareTo(currentSecond) != -1) {
			
			isTime = true;
		}
		
		return isTime;
	}	
	
	public static Date getFirstMondayInMonth() {
		
		Calendar cal = Calendar.getInstance();
		
		cal.set(Calendar.DAY_OF_MONTH, 1);
		
		int i = 1;
		while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY){
			cal.set(Calendar.DAY_OF_MONTH, i++);
		}
		
		return cal.getTime();
		
	}
	
	public static long getFirstMondayMindayInMonth() {
		
		Calendar cal = Calendar.getInstance();
		
		cal.set(Calendar.DAY_OF_MONTH, 1);
		
		int i = 1;
		while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY){
			cal.set(Calendar.DAY_OF_MONTH, i++);
		}
		
		cal.set(Calendar.HOUR_OF_DAY, 12);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		
		return cal.getTimeInMillis();
		
	}
	
	public static long getDefMonth(String startDate, String endDate) {
	        
		SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
      
        long monthday;
      
        try {
            Date startDate1 = f.parse(startDate);
            //开始时间与今天相比较
            Date endDate1 = f.parse(endDate);

            Calendar starCal = Calendar.getInstance();
            starCal.setTime(startDate1);

            int sYear = starCal.get(Calendar.YEAR);
            int sMonth = starCal.get(Calendar.MONTH);
            int sDay = starCal.get(Calendar.DATE);

            Calendar endCal = Calendar.getInstance();
            endCal.setTime(endDate1);
            int eYear = endCal.get(Calendar.YEAR);
            int eMonth = endCal.get(Calendar.MONTH);
            int eDay = endCal.get(Calendar.DATE);

            monthday = ((eYear - sYear) * 12 + (eMonth - sMonth));

            if (sDay < eDay) {
                monthday = monthday + 1;
            }
            return monthday;
        } catch (ParseException e) {
            monthday = 0;
        }
        return monthday;
    }
	
	/**
	 * 获取当前中午12点的时间
	 * @return
	 */
	public static Long getMidday() {
		
		 Calendar calendar = Calendar.getInstance();
		 calendar.set(Calendar.HOUR_OF_DAY, 12);
		 calendar.set(Calendar.MINUTE, 0);
		 calendar.set(Calendar.SECOND, 0);
		 calendar.set(Calendar.MILLISECOND, 0);
		 
		 return calendar.getTimeInMillis();
		
	}
	
	
	/**------------------------比较时间 Start----------------------------------**/
	public static boolean isDateBeforeDate( String firstDate, String secondDate ){
		Date fDate = stringToDate(firstDate,NORM_DATE_PATTERN);
		Date sDate = stringToDate(secondDate,NORM_DATE_PATTERN);
		return fDate.before(sDate);
	}
	
	public static boolean isDateAfterDate( String firstDate, String secondDate ){
		return false == isDateBeforeDate(firstDate, secondDate);
	}
	
	
	
	
	
	
	/**------------------------比较时间 End----------------------------------**/
	
	
}
